Wir beginnen mit der Durchführung einer Reconnaissance, um Informationen über das Zielsystem zu sammeln. Dies umfasst das Scannen des Netzwerks, um offene Ports und Dienste zu identifizieren.
WPScan wurde mit der URL "http://192.168.2.161" gestartet, um WordPress-spezifische Schwachstellen zu finden. Der Scan wurde jedoch abgebrochen, da die URL auf "http://dc-2/" umleitet. Dies deutet darauf hin, dass die Maschine unter dem Hostnamen "dc-2" erreichbar ist. **Analyse:** Der Pentester erkennt, dass die ursprüngliche Ziel-URL eine Weiterleitung auf eine andere URL verursacht. Dies ist ein wichtiger Hinweis, da die WordPress-Installation möglicherweise unter der neuen URL gehostet wird. **Empfehlung:** Entweder die Option "--ignore-main-redirect" verwenden, um die Weiterleitung zu ignorieren, oder die URL auf die umgeleitete Adresse ändern, um den Scan korrekt durchzuführen.
Der Befehl `vi /etc/hosts` öffnet die Host-Datei in einem Texteditor. Diese Datei wird verwendet, um Hostnamen zu IP-Adressen zuzuordnen. Durch Bearbeiten dieser Datei kann der Hostname "dc-2" der IP-Adresse des Zielsystems zugewiesen werden. **Analyse:** Der Pentester greift auf die lokale Host-Datei zu, um sicherzustellen, dass der Hostname "dc-2" korrekt aufgelöst wird. Dies ist wichtig, um sicherzustellen, dass nachfolgende Scans und Angriffe auf die richtige IP-Adresse abzielen. **Empfehlung:** Die Host-Datei sollte nur mit Vorsicht bearbeitet werden. Falsche Einträge können zu Problemen bei der Namensauflösung führen.
`grep dc-2 /etc/hosts` sucht in der Datei `/etc/hosts` nach Zeilen, die "dc-2" enthalten. Die Ausgabe zeigt, dass "dc-2" bereits der IP-Adresse "192.168.2.161" zugeordnet ist. Dies bestätigt, dass das System den Hostnamen korrekt auflösen kann. **Analyse:** Der Pentester überprüft, ob der Hostname "dc-2" bereits in der Host-Datei vorhanden ist und auf die korrekte IP-Adresse zeigt. **Empfehlung:** Wenn der Hostname nicht vorhanden wäre oder auf eine falsche IP-Adresse zeigen würde, sollte der Eintrag entsprechend angepasst werden.
WPScan wird erneut ausgeführt, diesmal mit der korrekten URL "http://dc-2". Der Scan identifiziert interessante Informationen, wie den verwendeten Webserver (Apache/2.4.10) und das WordPress-Theme (twentyseventeen). Es werden auch potenzielle Schwachstellen in WordPress und dem Theme gefunden, wie z.B. XSS und Path Traversal. Es ist wichtig zu beachten, dass das Theme "twentyseventeen" veraltet ist, was ein zusätzliches Risiko darstellt. **Analyse:** WPScan führt nun einen umfassenden Scan der WordPress-Installation durch. Die Ergebnisse liefern wertvolle Informationen über die Konfiguration, das verwendete Theme und mögliche Schwachstellen. **Empfehlung:** Die identifizierten Schwachstellen sollten genauer untersucht und entsprechende Maßnahmen zur Behebung ergriffen werden. Das Theme "twentyseventeen" sollte auf die neueste Version aktualisiert oder durch ein sichereres Theme ersetzt werden.
Der Befehl `curl -s http://dc-2/index.php/wp-json/WP/V2/users` fragt die WordPress-REST-API ab, um Benutzerinformationen abzurufen. Die Option `-s` sorgt für eine stille Ausgabe. Die Ausgabe wird dann mit `tr "," "\n"` bearbeitet, um die Kommas durch Zeilenumbrüche zu ersetzen, was die Lesbarkeit verbessert. Die Ergebnisse zeigen die Benutzernamen "admin" und "Jerry Mouse". Die Kenntnis der Benutzernamen ist ein wichtiger Schritt bei Brute-Force-Angriffen. **Analyse:** Der Pentester nutzt die WordPress-REST-API, um Benutzerinformationen abzurufen. Dies ist eine gängige Methode, um Benutzernamen zu enumerieren, die später für Brute-Force-Angriffe verwendet werden können. **Empfehlung:** Der Zugriff auf die WordPress-REST-API sollte eingeschränkt werden, um die Enumeration von Benutzernamen zu verhindern.
`cewl -w dc2.txt http://dc-2/` verwendet das CeWL-Tool (Custom Word List Generator), um eine benutzerdefinierte Wortliste von der Webseite "http://dc-2/" zu erstellen. Die Option `-w dc2.txt` speichert die generierte Wortliste in der Datei "dc2.txt". Diese Wortliste kann für Passwort-Cracking-Angriffe verwendet werden. **Analyse:** Der Pentester verwendet CeWL, um eine benutzerdefinierte Wortliste von der Zielwebseite zu erstellen. Diese Wortliste enthält Wörter, die auf der Webseite gefunden wurden und daher wahrscheinlich in Passwörtern verwendet werden. **Empfehlung:** Die generierte Wortliste sollte mit anderen Standard-Wortlisten kombiniert und für Passwort-Cracking-Angriffe verwendet werden.
`cat dc2.txt` zeigt den Inhalt der Datei "dc2.txt" an, die von CeWL generiert wurde. Diese Datei enthält eine Liste von Wörtern, die auf der Webseite "http://dc-2/" gefunden wurden. Diese Wörter können als potenzielle Passwörter verwendet werden. **Analyse:** Der Pentester überprüft den Inhalt der generierten Wortliste. Die Liste enthält Wörter, die auf der Zielwebseite gefunden wurden und daher wahrscheinlich in Passwörtern verwendet werden könnten. **Empfehlung:** Die generierte Wortliste sollte mit anderen Standard-Wortlisten kombiniert und für Passwort-Cracking-Angriffe verwendet werden.
`wpscan --url http://dc-2 -e u,p --passwords dc2.txt --api-token RoBoAaM72LLsihlqUJrA1EleT6AJAd9QxQ9rbmQNCY` führt einen Brute-Force-Angriff auf die WordPress-Installation durch, um Anmeldeinformationen zu finden. Die Option `-e u,p` gibt an, dass Benutzernamen und Passwörter enumeriert werden sollen. Die Option `--passwords dc2.txt` verwendet die zuvor generierte Wortliste "dc2.txt" als Passwortliste. Der Scan findet gültige Anmeldeinformationen für die Benutzer "jerry" und "tom". Die Passwörter werden im Bericht hervorgehoben. **Analyse:** WPScan wird verwendet, um einen Brute-Force-Angriff auf die WordPress-Anmeldung durchzuführen. Die zuvor generierte Wortliste "dc2.txt" wird als Passwortliste verwendet. Der Angriff ist erfolgreich und findet gültige Anmeldeinformationen für die Benutzer "jerry" und "tom". **Empfehlung:** Starke Passwörter sollten verwendet und die Anzahl der fehlgeschlagenen Anmeldeversuche begrenzt werden, um Brute-Force-Angriffe zu verhindern. Eine Zwei-Faktor-Authentifizierung sollte ebenfalls in Betracht gezogen werden.
Nachdem wir gültige Anmeldeinformationen für den Benutzer "tom" gefunden haben, versuchen wir, uns über SSH anzumelden.
Wir verwenden den Befehl `ssh tom@192.168.2.161 -p 7744`, um uns als Benutzer "tom" bei der IP-Adresse 192.168.2.161 über den Port 7744 anzumelden. Nach erfolgreicher Authentifizierung erhalten wir eine Shell-Sitzung auf dem Zielsystem. **Analyse:** Der Pentester nutzt die gefundenen Anmeldeinformationen, um sich über SSH am Zielsystem anzumelden. Die erfolgreiche Anmeldung zeigt, dass die gefundenen Anmeldeinformationen gültig sind und der Benutzer "tom" Zugriff auf das System hat. **Empfehlung:** Die SSH-Konfiguration sollte gehärtet und ungewöhnliche Ports vermieden werden.
Der Befehl `id` wird verwendet, um die Benutzer- und Gruppen-ID des aktuellen Benutzers anzuzeigen. In diesem Fall wird der Befehl jedoch nicht gefunden, was darauf hindeutet, dass der Benutzer in einer eingeschränkten Shell (Rbash) arbeitet. **Analyse:** Der Pentester stellt fest, dass der Befehl "id" nicht gefunden wird, was darauf hindeutet, dass der Benutzer in einer eingeschränkten Shell (Rbash) arbeitet. Dies erschwert die Ausführung von Befehlen und die Eskalation von Berechtigungen. **Empfehlung:** Es sollten Maßnahmen ergriffen werden, um aus der eingeschränkten Shell auszubrechen.
Der Befehl `id` wird erneut ausgeführt, nachdem wahrscheinlich Umgebungsvariablen angepasst wurden. Die Ausgabe zeigt, dass der Benutzer "tom" die Benutzer-ID 1001 und die Gruppen-ID 1001 hat. **Analyse:** Der Pentester führt den Befehl "id" erneut aus, und diesmal wird er erfolgreich ausgeführt. Die Ausgabe zeigt die Benutzer- und Gruppen-ID des Benutzers "tom". **Empfehlung:** Die Benutzer- und Gruppen-ID sollten notiert werden, da sie bei der Eskalation von Berechtigungen hilfreich sein können.
Der Benutzer versucht, aus der eingeschränkten Shell (Rbash) auszubrechen, indem er den Editor `vi` verwendet und die Shell auf `/bin/bash` setzt. Die Befehle `:set shell=/bin/bash` und `:shell` werden verwendet, um eine neue Shell zu starten. **Analyse:** Der Pentester versucht, aus der eingeschränkten Shell (Rbash) auszubrechen, indem er den Editor "vi" verwendet und die Shell auf "/bin/bash" setzt. Dies ist eine gängige Methode, um eine uneingeschränkte Shell zu erhalten. **Empfehlung:** Die Verwendung von "vi" in einer eingeschränkten Shell sollte verhindert werden.
Der Befehl `export PATH=/bin:/usr/bin:$PATH` fügt die Verzeichnisse `/bin` und `/usr/bin` zur Umgebungsvariable `PATH` hinzu. Dadurch können Befehle, die sich in diesen Verzeichnissen befinden, direkt ausgeführt werden, ohne den vollständigen Pfad angeben zu müssen. **Analyse:** Der Pentester fügt die Verzeichnisse "/bin" und "/usr/bin" zur Umgebungsvariable "PATH" hinzu. Dies ermöglicht die Ausführung von Befehlen, die sich in diesen Verzeichnissen befinden, ohne den vollständigen Pfad angeben zu müssen. **Empfehlung:** Die Umgebungsvariable "PATH" sollte sorgfältig konfiguriert und nicht unnötig erweitert werden.
Der Befehl `export SHELL=/bin/bash:$SHELL` ändert die Umgebungsvariable `SHELL` auf `/bin/bash`. Dies kann dazu beitragen, die eingeschränkte Shell zu umgehen. **Analyse:** Der Pentester ändert die Umgebungsvariable "SHELL" auf "/bin/bash". Dies kann dazu beitragen, die eingeschränkte Shell zu umgehen. **Empfehlung:** Die Umgebungsvariable "SHELL" sollte nicht vom Benutzer geändert werden können.
Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach Dateien mit dem SUID-Bit gesetzt. Das SUID-Bit ermöglicht es einem Benutzer, eine ausführbare Datei mit den Berechtigungen des Eigentümers der Datei auszuführen. Die Ausgabe zeigt eine Liste von Dateien mit dem SUID-Bit, die potenziell für Privilege Escalation ausgenutzt werden könnten. `2>/dev/null` leitet Fehlermeldungen in den Papierkorb um, um die Ausgabe übersichtlicher zu gestalten. **Analyse:** Der Pentester sucht nach Dateien mit dem SUID-Bit gesetzt. Diese Dateien können potenziell für Privilege Escalation ausgenutzt werden, da sie mit den Berechtigungen des Eigentümers ausgeführt werden. **Empfehlung:** Die Anzahl der Dateien mit dem SUID-Bit gesetzt sollte minimiert und die Berechtigungen sorgfältig geprüft werden.
Der Befehl `ls /home/` listet die Verzeichnisse im `/home/`-Verzeichnis auf. Die Ausgabe zeigt die Verzeichnisse "jerry" und "tom", was darauf hindeutet, dass diese Benutzer auf dem System existieren. **Analyse:** Der Pentester listet die Verzeichnisse im "/home/"-Verzeichnis auf, um die vorhandenen Benutzer zu ermitteln. **Empfehlung:** DieHome-Verzeichnisse sollten ordnungsgemäß gesichert und die Berechtigungen eingeschränkt werden.
`ls -la` listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, einschließlich versteckter Dateien. Die Option `-l` zeigt die detaillierte Liste mit Berechtigungen, Eigentümer und Größe an. Die Option `-a` zeigt auch versteckte Dateien (beginnend mit einem Punkt) an. In der Ausgabe wird eine Datei namens "flag3.txt" gefunden. **Analyse:** Der Pentester listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, um interessante Dateien zu finden. Die Datei "flag3.txt" könnte eine Flag-Datei sein, die Informationen über das System enthält. **Empfehlung:** Die Berechtigungen für die Home-Verzeichnisse sollten eingeschränkt und die Dateien sorgfältig geprüft werden.
Der Befehl `cat flag3.txt` zeigt den Inhalt der Datei "flag3.txt" an. Der Inhalt gibt einen Hinweis auf den Benutzer "jerry" und den Befehl "su". **Analyse:** Der Pentester liest den Inhalt der Datei "flag3.txt". Der Inhalt gibt einen Hinweis auf den Benutzer "jerry" und den Befehl "su". Dies deutet darauf hin, dass der Benutzer "tom" möglicherweise die Berechtigungen des Benutzers "jerry" übernehmen kann. **Empfehlung:** Die Benutzerberechtigungen sollten sorgfältig geprüft werden.
Der Befehl `cat .bash_history` zeigt den Verlauf der Befehle an, die der Benutzer "tom" ausgeführt hat. Dies kann nützliche Informationen über die Aktivitäten des Benutzers liefern. **Analyse:** Der Pentester liest die ".bash_history"-Datei, um Informationen über die Aktivitäten des Benutzers "tom" zu sammeln. **Empfehlung:** Die ".bash_history"-Datei sollte regelmäßig gelöscht werden, um die Privatsphäre zu schützen.
Wir versuchen nun, die Berechtigungen zu erhöhen, indem wir den Benutzer wechseln.
Mit dem Befehl `su jerry` versuchen wir, zum Benutzer "jerry" zu wechseln. Nachdem wir das korrekte Passwort eingegeben haben, sind wir als Benutzer "jerry" angemeldet. Der Befehl `id` bestätigt, dass wir jetzt die Benutzer-ID 1002 haben. **Analyse:** Der Pentester wechselt erfolgreich zum Benutzer "jerry". **Empfehlung:** Es sollten Maßnahmen ergriffen werden, um unbefugtes Wechseln von Benutzern zu verhindern.
Der Befehl `sudo -l` zeigt die Befehle an, die der Benutzer "jerry" mit `sudo` ausführen darf. In diesem Fall darf "jerry" den Befehl `/usr/bin/git` als Benutzer "root" ausführen, ohne ein Passwort einzugeben. **Analyse:** Der Pentester überprüft, welche Befehle der Benutzer "jerry" mit "sudo" ausführen darf. Die Ausgabe zeigt, dass der Benutzer "jerry" den Befehl "/usr/bin/git" als Benutzer "root" ausführen darf. **Empfehlung:** Die "sudo"-Berechtigungen sollten sorgfältig geprüft und eingeschränkt werden.
Der Befehl `sudo -u root /usr/bin/git -p help config` führt den Befehl `/usr/bin/git` als Benutzer "root" aus. Die Option `-p help config` öffnet die Hilfeseite für den Befehl `git config`. Durch die Ausführung des Befehls `!/bin/bash` wird eine neue Shell als Benutzer "root" gestartet. Der Befehl `id` bestätigt, dass wir jetzt als Benutzer "root" angemeldet sind. **Analyse:** Der Pentester nutzt die "sudo"-Berechtigungen des Benutzers "jerry", um den Befehl "/usr/bin/git" als Benutzer "root" auszuführen. Durch die Ausführung des Befehls "!/bin/bash" wird eine neue Shell als Benutzer "root" gestartet. **Empfehlung:** Die "sudo"-Berechtigungen sollten sorgfältig geprüft und eingeschränkt werden. Die Ausführung von Shell-Befehlen als Benutzer "root" sollte vermieden werden.
Privilege Escalation erfolgreich! Fantastisch der Root-Zugriff war erfolgreich, nun haben wir unser Ziel erreicht!